package com.xiaoge.system.controller;


import com.xiaoge.response.Result;
import com.xiaoge.response.ResultCode;
import com.xiaoge.system.entity.Role;
import com.xiaoge.system.service.RoleService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
/**
 * 一、application/x-www-form-urlencoded
 *
 * 1、它是post的默认格式，使用js中URLencode转码方法。包括将name、value中的空格替换为加号；将非ascii字符做百分号编码；将input的name、value用‘=’连接，不同的input之间用‘&’连接。
 *
 * 2、百分号编码什么意思呢。比如汉字‘丁’吧，他的utf8编码在十六进制下是0xE4B881，占3个字节，把它转成字符串‘E4B881’，变成了六个字节，每两个字节前加上百分号前缀，得到字符串“%E4%B8%81”，变成九个ascii字符，占九个字节（十六进制下是0x244534254238253831）。把这九个字节拼接到数据包里，这样就可以传输“非ascii字符的  utf8编码的 十六进制表示的 字符串的 百分号形式”，^_^。
 *
 * 3、同样使用URLencode转码，这种post格式跟get的区别在于，get把转换、拼接完的字符串用‘?’直接与表单的action连接作为URL使用，所以请求体里没有数据；而post把转换、拼接后的字符串放在了请求体里，不会在浏览器的地址栏显示，因而更安全一些。
 *
 * 二、multipart/form-data
 *
 * 1、对于一段utf8编码的字节，用application/x-www-form-urlencoded传输其中的ascii字符没有问题，但对于非ascii字符传输效率就很低了（汉字‘丁’从三字节变成了九字节），因此在传很长的字节（如文件）时应用multipart/form-data格式。smtp等协议也使用或借鉴了此格式。


 */
/**
 * <p>
 * 角色表 前端控制器
 * </p>
 *
 * @author xiaoge
 * @since 2020-09-04
 */
@Api("角色管理")
@RestController
@RequestMapping("/system/role")
@CrossOrigin
public class RoleController {


    @Autowired
    public RoleService roleService;
    /**
     * 查询方法
     * http://localhost:8081/system/role/queryByCondition?roleName=%E6%B5%8B%E8%AF%95&remark=%E6%B5%8B%E8%AF%95
     */
    @ApiOperation("分页查询角色列表")
    @PostMapping("/queryByCondition")
    public Result queryByCondition(@RequestParam String roleName, @RequestParam String remark){
        List<Role> list = roleService.queryByCondition(roleName,remark);
        int size = list.size();
        return Result.ok().data("total",size).data("records",list);

    }
    /**
     * RequestBody:接受body里面的参数
     * RequestParam：接受param里面的参数
     * 凡是放在body中的都可以用@RequestBody接收，文件类型的数据可以用@RequestPart接收。
     * 凡是放在query中的都可以用@RequestParam接收，包括Get方式提交和Post(x-www-form-urlencoded)方式提交的
     */

    /**
     * 新增方法
     */
    @ApiOperation("新增方法")
    @PostMapping("/insertRole")
    public Result insertRloe(@RequestBody Role role){
        Long flag = roleService.addRole(role);
        return Result.ok();
    }

    /**
     * 删除方法
     */
    @ApiOperation("删除")
    @DeleteMapping("/delete")
    public Result delete(@RequestParam String id){
        int delete = roleService.delete(id);
        return Result.ok();
    }

    /**
     * 修改方法
     */
    @ApiOperation("修改方法")
    @PostMapping("/update")
    public Result update(@RequestParam String id,@RequestBody Role role){
        int update = this.roleService.update(id, role);
        return Result.ok();
    }


}

